// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: ST Logo Object
// Script Author: Christian Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------

// Aliases
private alias 3 : TYPE_STLOGO
private alias object.value10 : logoXPos
private alias object.value11 : rightsXPos

// Function declarations
reserve function Sega_CheckButtonCheat

// Tables
public table STLogo_table0
	4, 4, 4, 4, 4, 4, 4, 7, 2, 2, 3, 4, 4, 4, 4
end table

public table STLogo_table1
	4, 4, 4, 4, 4, 4, 7, 2, 2, 2, 3, 4, 4, 4
end table


function Sega_CheckButtonCheat
	temp0 = 0
	if inputPress.up == 1
		temp0 = 1
	end if
	if inputPress.down == 1
		temp0 = 2
	end if
	if inputPress.left == 1
		temp0 = 3
	end if
	if inputPress.right == 1
		temp0 = 4
	end if
	if inputPress.buttonA == 1
		temp0 = 5
	end if
	if inputPress.buttonB == 1
		temp0 = 6
	end if
	if inputPress.buttonC == 1
		temp0 = 7
	end if
	switch object.value3
	case 0
		if temp0 == 1
			object.value3++
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	case 1
		if temp0 == 1
			object.value3++
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	case 2
		if temp0 == 1
			object.value3++
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	case 3
		if temp0 == 2
			object.value3++
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	case 4
		if temp0 == 2
			object.value3++
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	case 5
		if temp0 == 2
			object.value3++
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	case 6
		if temp0 == 3
			object.value3++
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	case 7
		if temp0 == 4
			object.value3++
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	case 8
		if temp0 == 3
			object.value3++
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	case 9
		if temp0 == 4
			object.value3++
			object.value3 = 0
			options.stageSelectFlag = 1
			PlaySfx(SfxName[Ring L], 0)
		else
			if temp0 != 0
				object.value3 = 0
			end if
		end if
		break
	end switch
	switch object.value4
	case 0
		if temp0 == 1
			object.value4++
		else
			if temp0 != 0
				object.value4 = 0
			end if
		end if
		break
	case 1
	case 2
	case 3
	case 4
		if temp0 == 2
			object.value4++
		else
			if temp0 != 0
				object.value4 = 0
			end if
		end if
		break
	case 5
		if temp0 == 1
			object.value4++
			object.value4 = 0
			options.region ^= 1
			PlaySfx(SfxName[Ring L], 0)
		else
			if temp0 != 0
				object.value4 = 0
			end if
		end if
		break
	end switch
end function


event ObjectMain
	if stage.player2Enabled == 1
		stage.playerListPos = 3
	end if
	if options.gameMode == 0
		if object.state > 2
			//CallFunction(Sega_CheckButtonCheat)
		end if
	end if
	switch object.state
	case 0
		if object.value0 == 30
			object[+2].type = TypeName[Twinkle Stars]
			object[+2].priority = PRIORITY_ACTIVE
		end if
		if object.value0 < 60
			object.value0++
		else
			object.value0 = 0
			object.alpha = 256
			object.state++
			logoXPos = -116
			rightsXPos = screen.xsize
			rightsXPos += 150
		end if
		break
	case 1
		if object.alpha > 0
			object.alpha -= 8
		else
			object.state++
		end if
		break
	case 2
		if object.value0 < 40
			object.value0++
		else
			if tileLayer[2].scrollPos < 5000000
				tileLayer[2].scrollPos += 80000
			else
				tileLayer[2].scrollPos = 5000000
				object.state++
				object.value0 = 0
			endif
		endif
		object.value5++
		if object.value5 > 7
			tileLayer[2].deformationOffset++
			object.value5 = 0
		end if
		break
	case 3
		if object.value0 < 30
			object.value0++
			if rightsXPos != screen.xsize
				rightsXPos -= 5
			else
				rightsXPos = screen.xsize
			end if
		else
			rightsXPos = screen.xsize
			object.value0 = 0
			object.alpha = 256
			stage[0].activeLayer = 2
		end if
		object.value5++
		if object.value5 > 7
			tileLayer[2].deformationOffset++
			object.value5 = 0
		end if

		if title.state == 0
			temp1 = 214
		else
			temp1 = 124
		end if

		if logoXPos <= temp1
			logoXPos += 8
		else
			logoXPos = temp1
			object.state++
		end if
		break
	case 4
		if object.alpha > 0
			object.alpha -= 12
		else
			object.state++
			object[+2].type = TypeName[Start Message]
			object[+2].priority = PRIORITY_ACTIVE
			object[+2].xpos = screen.xcenter
			object[+2].ypos = 208

		end if
		object.value5++
		if object.value5 > 7
			tileLayer[2].deformationOffset++
			object.value5 = 0
		end if
		break
	case 5
		object.value5++
		if object.value5 > 7
			tileLayer[2].deformationOffset++
			object.value5 = 0
		end if

		if title.state == 0
			temp1 = 214
		else
			temp1 = 124
		end if

		if logoXPos < temp1
			logoXPos += 16
		else
			logoXPos = temp1
			//if SaveRAM[409] != 1
				PlaySfx(SfxName[Sonic Title], 0)
			//end if
			object.state = 6
		end if
		break
	case 6
		object.value5++
		if object.value5 > 7
			tileLayer[2].deformationOffset++
			object.value5 = 0
		end if
		foreach (TypeName[Main Menu], arrayPos0, ALL_ENTITIES)
			if object[arrayPos0].state == 8
				if logoXPos > -110
					logoXPos -= 16
				else
					logoXPos = -110
				end if
			else
				if title.state == 0
					temp1 = 214
					rightsXPos = screen.xsize
				else
					temp1 = 124
				end if

				if logoXPos < temp1
					logoXPos += 16
				else
					logoXPos = temp1
				end if
			end if
		next
		break
	end switch
	temp0 = screen.xcenter
	FlipSign(temp0)
	temp0 += 256
	screen.xoffset = temp0
end event


event ObjectDraw
	switch object.state
	case 3
	case 4
	case 5
	case 6
		temp0 = logoXPos
		if title.state == 0
			DrawSpriteScreenXY(0, temp0, 115)
		else
			DrawSpriteScreenXY(0, temp0, 65)
		end if

		temp0 = rightsXPos
		temp0 -= 68
		temp1 = screen.ysize
		temp1 -= 8
		DrawSpriteScreenXY(1, temp0, temp1)
		temp0 = logoXPos
		temp0 -= 120
		temp1 -= screen.ysize
		temp1 += 10
		DrawSpriteScreenXY(2, temp0, temp1)

		break
	end switch
end event


event ObjectStartup
	LoadSpriteSheet("Title/Title.gif")
	arrayPos0 = 256
	while arrayPos0 < 576
		arrayPos1 = arrayPos0
		arrayPos1 -= 256
		Rand(stage[arrayPos1].deformationData2, 4)
		temp0 = arrayPos0
		temp0 &= 1
		if temp0 == 1
			FlipSign(stage[arrayPos1].deformationData2)
		end if
		stage[arrayPos0].deformationData2 = stage[arrayPos1].deformationData2
		arrayPos0++
	loop
	SpriteFrame(-108, -45, 217, 91, 1, 64)		//00 Essence Logo
	SpriteFrame(-34, -8, 97, 13, 334, 156)		//01 TEAM REDREAM
	SpriteFrame(0, 0, 30, 7, 364, 134)		//02 Adventure Mode
end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 1, 143)
end event
